寫程式是什麼?我的回答是:【使用電腦的語言去解決問題】。而第二個問題一定會是資料 (Data),尤其是資料在電腦裡的表現型態 (Data Representation)。
這是我教學經驗的精華。在這個系列文章的讀者多半有一定的職場或程式經驗,而我有幸接觸到來自各行各業的學生,教他們 Python 這門程式語言。不論是國中生、國內外高中生,還是求職者、在職人士及企業內訓,儘管背景不同,大家所面對的問題往往相似,只是程度不同而已。
我們可以把我們跟電腦想成 台灣人 和 美國人,我們有件事情希望請美國人去做時,我們是不是會去講英文,等對方完成後會跟我們回報,並把資料交給我,這次我再把它整理整理再給老闆過目。
換到電腦上也一樣,我們有件事情希望電腦幫我們去做,所以我們用寫程式語言交給電腦去執行,等對方完成後會跟我們回報,我們也會根據對方完成的正不正確再去溝通,也就是再去修改我們提交出去的程式語言,等到結果是我們要的,我們再把資料給老闆確認過目。
這樣就結束了嗎? 還沒呢,由於現在加入了 GenAI,那你想想上面的例子,現在會變成什麼情況吧?
有了 GenAI,情況變得更有趣了。現在我們可以用中文指示 GenAI (例如 ChatGPT),再由 GenAI 根據我們的需求,讓它的分身 GenAI Python 去撰寫程式,並將結果交回給我們。我們接著測試程式的可行性,這次我們像是小老闆一樣,需要判斷 GenAI 給出的程式碼是否符合需求,並進行簡單的測試。
如果結果不符預期,我們可能 …
無論如何,最終我們都需要交付一份可以運行的程式碼。而這個過程往往會需要更精確的指令,或者你可能會自己跳下來直接修改程式碼。
你會發現,電腦在這個過程中扮演的角色始終不變,真正執行指令的依然是電腦。下面的圖示中,我故意拿掉了演算法 (Algorithm),重點在於上方標示的 input
和 output
,這兩個是電腦裡資料的表示形式,所以我們需要先了解電腦中的資料是如何表現的。
就如同下面的圖,我們重點來提點一下,由於我們要將我們的認知中的資料翻譯過去給電腦,所以來看看這是如何對應的吧。
在數學中,小數可以無限延伸,但在電腦中卻無法精確表示。舉例來說,1.5 加上 1.4 的結果可能會變成 2.8999999999999999,這是因為電腦無法精確表示某些小數。我們可以使用 round()
函數進行四捨五入,解決這類問題。
在學習了基本的資料型態後,使用 GenAI 的方式會變得更精確。例如:
原始指令:
「請幫我把 x, y, z 座標平方後開根號」
優化後的指令:
「我給你一組 x, y, z 的整數資料,請你幫我平方後開根號,並以浮點數型態返回結果」
再比如:
原始指令:
「請幫我寫一個會議邀請的寄信範本」
優化後的指令:
「請幫我寫一個會議邀請的寄信範本,使用 Multiline String 表示格式,裡面的時間、地點、寄信人、收信人都要以字串的形式方便替換」
明天我們在來講到變數和運算 : ) 明天見!